import 'package:flutter/material.dart';

import 'package:hzy_normal_tool/hzy_normal_tool.dart';

import '../../common/index.dart';

import '../../config/index.dart';
import '../../models/index.dart';
import '../../widget/index.dart';
import '../workbench/workbench_page.dart';
import '../purchase/purchase_page.dart';
import '../communication/communication_page.dart';
import '../academy/academy_page.dart';
import '../mine/mine_page.dart';

class RootPage extends StatefulWidget {
  const RootPage({super.key});
  @override
  State<StatefulWidget> createState() {
    return RootPageState();
  }
}

class RootPageState extends BaseStateV<RootPage>
    with SingleTickerProviderStateMixin {
  // --------- 公开属性  --------- //
  List<RootItemModel> itemList = [
    RootItemModel(
      title: StringConfig.tabWorkbench,
      widget: WorkbenchPage(),
    ),
    RootItemModel(
      title: StringConfig.tabPurchase,
      widget: PurchasePage(),
    ),
    RootItemModel(
      title: StringConfig.tabPatient,
      widget: CommunicationPage(),
    ),
    RootItemModel(
      title: StringConfig.tabCollege,
      widget: AcademyPage(),
    ),
    RootItemModel(
      title: StringConfig.tabMy,
      widget: MinePage(),
    ),
  ];

  int selectIndex = 0;
  late TabController controller = TabController(length: 5, vsync: this);
  // --------- 私有属性  --------- //
  @override
  get isShowAppBar => false;

  @override
  bool get safeAreaTop => false;
  // --------- 生命周期  --------- //

  // --------- 构建UI  --------- //

  @override
  Widget build(BuildContext context) {
    return createBody(context: context);
  }

  @override
  Widget createBody({
    required BuildContext context,
    BoxConstraints? constraints,
  }) {
    Widget body = Column(
      children: [
        createNormalBody(),
        createRootTabWidget(),
      ],
    );

    body = SizedBox.expand(
      child: body,
    );

    return body;
  }

  createNormalBody() {
    Widget body = DefaultTabController(
      length: itemList.length,
      child: TabBarView(
        controller: controller,
        physics: const NeverScrollableScrollPhysics(),
        children: [
          ...itemList.map((e) {
            return CommonKeepAliverWrapper(
              child: e.widget ?? Container(),
            );
          }),
        ],
      ),
    );
    body = Expanded(child: body);
    return body;
  }

  createRootTabWidget() {
    Widget body = RootTabWidget(
      normalIndex: selectIndex,
      itemList: itemList,
      onTapIndex: (index) {
        configTapItem(index);
      },
    );
    return body;
  }
  // --------- 数据处理  --------- //

  // --------- 触发事件  --------- //

  configTapItem(int index) {
    controller.animateTo(index);
  }
}

// /// 根页面 - 底部导航栏
// /// 包含工作台、采购、患者沟通、学院、我的五个主要模块
// class RootPage extends BaseGetXV<RootController> {
//   RootPage({super.key});

//   @override
//   RootController get controller => Get.put(RootController());

//   @override
//   Widget createBody({
//     required BuildContext context,
//     BoxConstraints? constraints,
//   }) {
//     return Obx(() => IndexedStack(
//           index: controller.currentIndex.value,
//           children: [
//             WorkbenchPage(),
//             PurchasePage(),
//             CommunicationPage(),
//             AcademyPage(),
//             MinePage(),
//           ],
//         ));
//   }

//   @override
//   createScaffolWidget({
//     required BuildContext context,
//     BoxConstraints? constraints,
//   }) {
//     return Scaffold(
//       body: createScallBody(
//         context: context,
//         constraints: constraints,
//       ),
//       bottomNavigationBar: Obx(() => ConvexAppBar(
//             style: TabStyle.react,
//             backgroundColor:
//                 context.theme.bottomAppBarTheme.color ?? Colors.white,
//             activeColor: context.theme.primaryColor,
//             color: context.theme.unselectedWidgetColor,
//             items: [
//               TabItem(
//                 icon: _buildTabIcon(0),
//                 title: '工作台',
//               ),
//               TabItem(
//                 icon: _buildTabIcon(1),
//                 title: '采购',
//               ),
//               TabItem(
//                 icon: _buildTabIcon(2),
//                 title: '患者',
//               ),
//               TabItem(
//                 icon: _buildTabIcon(3),
//                 title: '学院',
//               ),
//               TabItem(
//                 icon: _buildTabIcon(4),
//                 title: '我的',
//               ),
//             ],
//             initialActiveIndex: controller.currentIndex.value,
//             onTap: controller.onTabChanged,
//           )),
//     );
//   }

//   /// 构建底部导航图标
//   /// [index] 导航索引
//   Widget _buildTabIcon(int index) {
//     return Obx(() {
//       bool isSelected = controller.currentIndex.value == index;
//       return Container(
//         width: 24,
//         height: 24,
//         decoration: BoxDecoration(
//           borderRadius: BorderRadius.circular(4),
//         ),
//         child: Icon(
//           _getTabIconData(index),
//           size: 24,
//           color: isSelected
//               ? Get.context!.theme.primaryColor
//               : Get.context!.theme.unselectedWidgetColor,
//         ),
//       );
//     });
//   }

//   /// 获取底部导航图标数据
//   /// [index] 导航索引
//   IconData _getTabIconData(int index) {
//     switch (index) {
//       case 0:
//         return Icons.dashboard_outlined;
//       case 1:
//         return Icons.shopping_cart_outlined;
//       case 2:
//         return Icons.chat_outlined;
//       case 3:
//         return Icons.school_outlined;
//       case 4:
//         return Icons.person_outlined;
//       default:
//         return Icons.dashboard_outlined;
//     }
//   }
// }
